let indexModule = (function () {
    //基于发布订阅管理我们获取个人信息和权限信息后要处理的事情
    let $baseBox = $('.baseBox'),
        $baseBoxText = $baseBox.find('span'),
        $baseBoxSingOut = $baseBox.find('a'),
        $menuBox = $(".menuBox"),
        $navBoxList = $('.navBox>a'),
        $itemBoxList = null,
        $iframeBox = $(".iframeBox");
    // 基于发布订阅管理我们获取到的个人信息和权限信息要处理的事情
    let $plan = $.Callbacks();
    // 显示用户名和退出登录
    $plan.add((_, baseInfo) => {
        $baseBoxText.html(`您好：${baseInfo.name||''}`);
        $baseBoxSingOut.click(async () => {
            let result = await axios.get('/user/signout');
            if (result.code == 0) {
                //清除之前本地缓存的数据信息46
                localStorage.clear();
                window.location.href = "login.html";
                return;
            }
            alert('当前网络异常，请稍后重试');
        })
    });
    // 权限处理  控制左侧MENU渲染
    $plan.add(power => {
        let str = ``;
        if (power.includes('userhandle')) {
            str += `<div class="itemBox" text='员工管理'>
                        <h3>
                            <i class="iconfont icon-yuangong"></i>
                            员工管理
                        </h3>
                        <nav class="item">
                            <a href="page/userlist.html" target="iframeBox">员工列表</a>
                            <a href="page/useradd.html" target="iframeBox">新增员工</a>
                        </nav>
                    </div>`;
        }
        if (power.includes('departhandle')) {
            str += `<div class="itemBox" text='部门管理'>
                        <h3>
                            <i class="iconfont icon-guanliyuan"></i>
                            部门管理
                        </h3>
                        <nav class="item">
                            <a href="page/departmentlist.html" target="iframeBox">部门列表</a>
                            <a href="page/departmentadd.html" target="iframeBox">新增部门</a>
                        </nav>
                    </div>`;
        }
        if (power.includes('jobhandle')) {
            str += `<div class="itemBox" text='职务管理'>
                        <h3>
                            <i class="iconfont icon-zhiwuguanli"></i>
                            职务管理
                        </h3>
                        <nav class="item">
                            <a href="page/joblist.html" target="iframeBox">职务列表</a>
                            <a href="page/jobadd.html" target="iframeBox">新增职务</a>
                        </nav>
                    </div>`;
        }
        if (power.includes('customer')) {
            str += `<div class="itemBox" text="客户管理">
                        <h3>
                            <i class="iconfont icon-kehuguanli"></i>
                            客户管理
                        </h3>
                        <nav class="item">
                            <a href="page/customerlist.html?lx=my" target="iframeBox">我的客户</a>
                            ${power.includes('customerall')?`<a  href="page/customerlist.html?lx=all" target="iframeBox">全部客户</a>`:``}
                            <a href="page/customeradd.html" target="iframeBox">新增客户</a>
                        </nav>
                    </div> `;
        }
        $menuBox.html(str);
        $itemBoxList = $menuBox.find('.itemBox')
    })
    // 权限处理   控制结构和客户管理 点击切换
    function handleGroup(index) {
        //itmeBox分组 $gropu1 客户管理   $gropu2 组织结构
        let $gropu1 = $itemBoxList.filter((_, item) => {
            let text = $(item).attr('text');
            return text === "客户管理";
        })
        let $gropu2 = $itemBoxList.filter((_, item) => {
            let text = $(item).attr('text');
            return /^(员工管理|部门管理|职务管理)$/.test(text);
        })
        if (index === 0) {
            $gropu1.css('display', 'block');
            $gropu2.css('display', 'none');

        } else if (index === 1) {
            $gropu2.css('display', 'block');
            $gropu1.css('display', 'none');
        }
    }
    // 控制组织结构和客户管理
    $plan.add(power => {


        // 控制默认显示
        let initialIndex = power.includes('customer') ? 0 : 1;
        $navBoxList.eq(initialIndex).addClass('active').siblings().removeClass('active');
        handleGroup(initialIndex);

        // 控制切换
        $navBoxList.click(function () {
            let $this = $(this),
                index = $this.index(),
                text = $this.html().trim();
            // 权限校验
            if (text === "客户管理" && !/customer/.test(power)) {
                alert('当前操作无权限，请联系管理员申请权限');
                return;
            }
            if (text === "组织结构" && !/(userhandle|departhandle|jobhandle)/.test(power)) {
                alert('当前操作无权限，请联系管理员申请权限');
                return;
            }
            if (index === initialIndex) return;
            $(this).addClass('active');
            $navBoxList.eq(initialIndex).removeClass('active');
            handleGroup(index);
            initialIndex = index;
        })
    });
    // 权限处理 （控制默认iframe 嵌套的页面）
    $plan.add(power => {
        let url = 'page/customerlist.html?lx=my'
        if (!power.includes("customer")) {
            url = 'page/userlist.html'
        }
        $iframeBox.attr('src', url);
    })
    return {
        async init() {
            let result = await axios.get('/user/login');
            if (result.code != 0) {
                // 状态为未登录
                alert('当前状态未登录，请先登录..');
                window.location.href = "login.html";
                return;
            }
            // 获取用户权限信息  ajax 并行操作
            let [power, baseInfo] = await axios.all([
                axios.get('/user/power'),
                axios.get('user/info')
            ]);
            power.code == 0 ? power = power.power : null;
            baseInfo.code == 0 ? baseInfo = baseInfo.data : null;
            // 通知计划表中的任务执行
            $plan.fire(power, baseInfo)
        }
    }
})();
indexModule.init();